package com.ustb.springboot.common.utils;

import org.apache.shiro.crypto.hash.SimpleHash;
import org.apache.shiro.util.ByteSource;
//import sun.security.provider.MD5;

import java.util.HashMap;
import java.util.Map;
import java.util.UUID;


/**
 * 密码类
 * 对用户密码进行加密、校验操作
 *
 * @author pyn
 * @date 2022/5/7 - 1:12
 */
public class SecretUtil {
    //对密码进行加密后返回密码和salt 存入数据库
    public static Map<String, String> Encryption(String password) {
        Map<String, String> resMap = new HashMap<>();
        //密码加密
        //随机字符串  salt盐值
        String salt = UUID.randomUUID().toString();
        //第一个参数：加密算法 MD5 第二个参数：原密码 第三个参数： 盐值 第四个参数 ：加密次数 1
        SimpleHash newPassword = new SimpleHash("MD5", ByteSource.Util.bytes(password), ByteSource.Util.bytes(salt), 1024);
        //返回数据
        resMap.put("salt", salt);
        resMap.put("password", newPassword.toString());
        return resMap;
    }

    public static boolean checkEncryption(String passwordInput, String salt, String passwordDB) {

        //密码加密
        //随机字符串  salt盐值
        //第一个参数：加密算法 MD5 第二个参数：原密码 第三个参数： 盐值 第四个参数 ：加密次数 1
        SimpleHash newPassword = new SimpleHash("MD5", ByteSource.Util.bytes(passwordInput), ByteSource.Util.bytes(salt), 1024);

        return newPassword.toString().equals(passwordDB);
    }
}
